initial report on encfs and per-repository ssh caching
authoryarikoptic <yarikoptic@web>
Sun, 5 Jan 2025 00:56:51 +0000 (00:56 +0000)
committeradmin <admin@branchable.com>
Sun, 5 Jan 2025 00:56:51 +0000 (00:56 +0000)
doc/todo/either_support_or_fail___34__more_gracefully__34___on_encfs.mdwn [new file with mode: 0644]

diff --git a/doc/todo/either_support_or_fail___34__more_gracefully__34___on_encfs.mdwn b/doc/todo/either_support_or_fail___34__more_gracefully__34___on_encfs.mdwn
new file mode 100644 (file)
index 0000000..d6d332d
--- /dev/null
@@ -0,0 +1,58 @@
+After spending some time in troubleshooting the situation that `git-annex` for some reason claims that `origin` remote does not support git-annex, I have ran into [11 year old discussion](https://git-annex.branchable.com/forum/ssh__95__exchange__95__identification__58___read__58___Connection_reset_by_peer/#comment-1776b4d3b175c77cdb44fc8656e3352c) which boils down to
+
+> It would be a good idea to `git config annex.sshcaching` false in repositories stored on encfs.
+
+As AFAIK encfs is generally working ok (seems to test ok with bleeding edge [ref](https://github.com/datalad/git-annex/issues/216)), and overall if there is something wrong, it better be fixed and not "avoided", I think that git-annex should either inform user about necessity to not do internal caching within the same repository (e.g. to have it configured to be shared somewhere under ~/.cache/` instead or a like) if file system does not support the ssh caching, or even somehow automagically handle the case, but it should not mislead in its reporting stating that remote does not support git-annex whenever it does.
+
+With this minimalistic reproducer where origin on a regular filesystem and a clone is under `encfs`, we receive a misleading error:
+
+<details>
+<summary>reproducer</summary> 
+
+```
+#!/bin/bash                                                                                                                                                                         
+export PS4='> '                                                                                                                                                                     
+set -x                                                                                                                                                                              
+set -eu                                                                                                                                                                             
+                                                                                                                                                                                    
+cd "$(mktemp -d ${TMPDIR:-/tmp}/dl-XXXXXXX)"                                                                                                                                        
+
+topd=$PWD
+mkdir -p denc{r,}; encfs --standard --extpass="echo 123" $PWD/denc{r,}
+
+cleanup () {
+    # to possible kill/troubleshoot
+    if ! fusermount -u $topd; then
+        lsof $topd/denc
+        echo "ERROR: failed to unmount"
+        exit 1
+    fi
+}
+trap cleanup SIGINT SIGHUP SIGABRT EXIT
+
+
+mkdir d
+(cd d; git init; git annex init; echo 1 > 1.dat; git annex add 1.dat; git commit -m 1 1.dat)
+
+echo "cloning locally and ssh works ok, testing"
+git clone localhost:$topd/d d-clone
+git -C d-clone annex wanted origin
+
+echo "but would not be happy under encfs with misleading error:"
+cd denc
+git clone localhost:$topd/d d-clone
+git -C d-clone annex wanted origin
+
+```
+</details>
+
+
+```
+> git -C d-clone annex wanted origin
+  Unable to parse git config from origin
+  Remote origin does not have git-annex installed; setting annex-ignore
+  This could be a problem with the git-annex installation on the remote. Please make sure that git-annex-shell is available in PATH when you ssh into the remote. Once you have fixed the git-annex installation, run: git annex enableremote origin
+git-annex: cannot determine uuid for origin (perhaps you need to run "git annex sync"?)
+```
+
+which is simply due to the fact that git-annex does not only unable to parse, it is unable to connect.  But if so, IMHO ideally it should avoid claiming anything about git annex installation there.